home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / comm2 / zpont311.lha / zpoint-3.11 / Rexx / ZPSortPM.zprx < prev   
Text File  |  1995-09-03  |  6KB  |  177 lines

  1. /*  
  2.     $VER: ZPSortPM.zprx V1.0 (31.08.1995) - Björn Koch
  3.  
  4.  
  5. Dieses Skript wurde speziell für Zodiac`s Point erstellt, und dient zum
  6. automatischen internen Weiterleiten von Nachrichten ausgewählter Personen.
  7.  
  8. Motiv für die Erstellung dieses Skriptes war die riesige Unordnung in meinem
  9. persönlichen Postfach und der Wunsch, ausgewählte Schriftverkehre geordnet zu
  10. archivieren und damit das Postfach zu entlasten. Ebenso war ein vernüftiges
  11. Verwalten von Mailinglisten ein Beweggrund.
  12.  
  13. Dieses Skript darf beliebig kopieren werden, solange es zusammen mit
  14. Zodiac's Point eingesetzt wird. Veränderungen ohne Erlaubnis des
  15. Autors (außer dem Konfigurationsteil) sind nicht erlaubt.
  16.  
  17.  
  18.     Hinweise zur Installation:
  19.  
  20. Einfach dieses Skript in das Rexx-Verzeichnis von ZP kopieren, die
  21. Feinabstimmung vornehmen und auf Wunsch die Zeile
  22. "F1:SYS:Rexxc/rx ZPoint:Rexx/ZPSortPM.zprx %s"
  23. in die Datei 'fkeys.zp' einfügen.
  24.  
  25. Viel effektiver jedoch ist das Einfügen in die Skript-Datei
  26. 'stepin.zp' des entsprechenden Brettes. Dann sollte der Eintrag wie
  27. folgt lauten:
  28. "Run >NIL: SYS:Rexxc/rx ZPoint:Rexx/ZPSortPM.zprx".
  29.  
  30.     Dabei bitte an das S-Bit denken !!!
  31.  
  32. Nähere Angaben zu den Dateien 'fkeys.zp' und 'stepin.zp' sind in der
  33. Guide-Datei zu Zodiac`s Point zu finden.
  34.  
  35. Zuerst ist es ratsam, in ZPoint entsprechend neue Bretter anzulegen, wohin die
  36. Nachrichten weitergeleitet werden sollen (z.B. "ZP-Server"wie in der zweiten
  37. Zeile des Beispiels weiter unten). Diese beim Server auch anzumelden wird wenig
  38. Sinn haben :). Ebenso sollte man in diesem Brett keine "öffentlichen"
  39. Nachrichten schreiben, da diese mit ziemlicher Sicherheit nicht zugestellt
  40. werden können ;).
  41.  
  42. Dann muß noch eine Datei erstellt werden, in der die ausgewählten Personen mit
  43. ihren Parametern für dieses Skript aufgelistst sind. Das Format der Liste sieht
  44. pro Person eine Zeile vor, die genau drei (3) Wörter enthalten muß. Das erste
  45. Wort ist die E-Mail-Adresse der Person, das zweite Wort ist das Brett, in das
  46. die jeweiligen Nachrichten weitergeleitet werden sollen und das dritte Wort gibt
  47. an, ob die Nachrichten nach dem Weiterleiten zum Löschen markiert werden sollen
  48. (1 für JA, 0 für NEIN).
  49.  
  50. Beispiel:
  51.  
  52. Zodiac@Darkness.gun.de /t-netz/support/zodiacs_point-beta 0
  53. FileServer@Darkness.gun.de ZP-Server 1
  54. Joe_Random@foo.bar.edu Nachrichtenarchiv 0
  55.  
  56. Die erste Zeile würde nun dafür sorgen, daß alle Nachrichten im aktuellen
  57. Brett von Zodiac@Darkness.gun.de intern ins das Brett
  58. /t-netz/support/zodiacs_point-beta weitergeleitet und die Origalnachrichten
  59. NICHT zum Löschen markiert werden (über den SINN dieser Aktion reden wir hier
  60. mal nicht ;))). Die zweite Zeile würde alle Nachrichten im aktuellen Brett vom
  61. FileServer der Darkness in das Brett ZP-Server intern weiterleiten und die
  62. Originalnachrichten zum Löschen markieren. Die letzte Zeile würde dafuer Sorgen,
  63. daß alle Nachrichten von Joe_Random@foo.bar.edu im aktuellen Brett ins
  64. Nachrichtenarchiv weitergeleitet werden ohne dabei die Originalnachrichten zum
  65. Löschen zu markieren.
  66.  
  67.  
  68. Die Benutzung und Installation dieses Skriptes erfolgt auf eigene
  69. Gefahr, und der Autor übernimmt keine Haftung für eventuelle Schäden
  70. jeder Art, die durch die Benutzung oder Installation erstanden sind
  71. oder entstehen können.
  72.  
  73. Für Anregungen, Fehlermeldungen und Verbesserungsvorschläge ist der
  74. Autor sehr dankbar und wie folgt zu erreichen:
  75.  
  76.     Björn Koch          H.Humpel@NOSTLGIC.tng.oche.de
  77.  
  78. */
  79.  
  80. /* Die Feinabstimmung: (Beginn Konfigurationsteil) */
  81.  
  82. ListDatei = "ZPoint:ZPSortPM.list"  /* Die Liste der Betroffenen */
  83.  
  84. /* AB HIER BITTE NICHTS MEHR ÄNDERN!!! (Ende Konfigurationsteil) */
  85.  
  86. OPTIONS RESULTS
  87.  
  88. PARSE ARG ZPPort
  89. IF ZPPort == "" THEN
  90.    ZPPort = 'ZPoint'
  91. ADDRESS VALUE ZPPort
  92.  
  93. WHICHLEVEL
  94. Level=RESULT
  95. IF Level ~= "BOARD" THEN DO
  96.     REQUESTNOTIFY " Dieses Skript arbeitet nur, wenn Du in einem Brett bist!!"
  97.     EXIT
  98.   END
  99.  
  100. CALL LeseListe
  101.  
  102. if (Anzahl ~= 0) THEN DO
  103.     GUILOCK ON
  104.     SELECTMESSAGE NONE
  105.     JUMPTOMESSAGE 1
  106.     Keine = 0
  107.     MESSAGEINFO AGE
  108.     if (Result = 'NEW') THEN
  109.         CALL CheckIt
  110.     DO while (Keine = 0)
  111.         JUMPTONEW DOWN
  112.         IF ~RC THEN
  113.             Keine = 1
  114.         else
  115.             CALL CheckIt
  116.     END
  117. END
  118.  
  119. GUILOCK OFF
  120.  
  121. EXIT
  122.  
  123.  
  124. /* Die Unterroutinen... */
  125.  
  126. LeseListe:
  127.     IF EXISTS(ListDatei) THEN DO
  128.         CALL Open('DateiList',ListDatei,'R')
  129.         Anzahl = 0
  130.         Zeile = ReadLn('DateiList')
  131.         Zeilenzahl = 1
  132.         DO WHILE(~EOF('DateiList'))
  133.             IF WORDS(Zeile) == 3 THEN DO
  134.                 Absender.Anzahl = WORD(Zeile,1)
  135.                 IF LASTPOS('@', Absender.Anzahl) ~= 0 THEN DO
  136.                     Absender.Anzahl = UPPER(Absender.Anzahl)
  137.                     Export.Anzahl = WORD(Zeile,2)
  138.                     Delete.Anzahl = WORD(Zeile,3)
  139.                     if ((Delete.Anzahl ~= 1)&(Delete.Anzahl ~= 0)) THEN DO
  140.                         Delete.Anzahl = '0'
  141.                         REQUESTNOTIFY " ERROR im DeleteIdentifier in Zeile "||Zeilenzahl||" !!!  Setze Wert auf 0 !! "
  142.                         END
  143.                     Anzahl = Anzahl + 1
  144.                     END
  145.                 else
  146.                     REQUESTNOTIFY " ERROR im AbsenderIdentifier in Zeile "||Zeilenzahl||" !!! "
  147.                 END
  148.             else
  149.                 REQUESTNOTIFY " ERROR in der Liste !! Falsche Anzahl Identifier in Zeile "||Zeilenzahl||" !!! "
  150.             Zeile = ReadLn('DateiList')
  151.             Zeilenzahl = Zeilenzahl + 1
  152.             END
  153.         END
  154.     else
  155.         REQUESTNOTIFY " Konnte Liste "||DateiListe||" nicht finden !!! "
  156.     CALL Close('DateiList')
  157.     RETURN
  158.  
  159.  
  160. CheckIt:
  161.     MESSAGEINFO AUTHOR
  162.     Autor = WORD(Result, 1)
  163.     Autor = UPPER(Autor)
  164.     DO i = 0 to Anzahl-1
  165.         if (Autor = Absender.i) THEN DO
  166.             FORWARDMESSAGE Export.i INTERNAL
  167.             if (RC == 0) THEN
  168.                 REQUESTNOTIFY " Konnte Nachricht NICHT weiterleiten !! "
  169.             else
  170.                 if (Delete.i == 1) THEN
  171.                     DELETE ONE
  172.         END
  173.     END
  174.     RETURN
  175.  
  176. /* ... und ENDE! */
  177.